/*
Copyright (C) 2009-2010 Xanadu Development Team

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2
of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

#pragma once

#include <hash_map>

using namespace stdext;

class Player;
class Quest;

class PlayerQuests {
public:
	~PlayerQuests();
	PlayerQuests(Player* player){
		this->player = player;
	}
	vector <Quest*> getQuestsInProgress(){
		vector<Quest*> ret;
		for (hash_map<int,Quest*>::iterator iter = pquests.begin(); iter != pquests.end(); iter++){
			ret.push_back(iter->second);
		}
		return ret;
	}
	vector <Quest*> getCompletedQuests(){
		vector<Quest*> ret;
		for (hash_map<int,Quest*>::iterator iter = cquests.begin(); iter != cquests.end(); iter++){
			ret.push_back(iter->second);
		}
		return ret;
	}
	hash_map<int, Quest*>* getQuestsInProgressInfo(){
		return &pquests;
	}
	hash_map<int, Quest*>* getCompletedQuestsInfo(){
		return &cquests;
	}
	void giveQuest(int questid, int npcid);
	Quest* getQuestByID(int questid);
	void completeQuest(int questid, int npcid, int selection = 0, bool force = false);
	void removeQuest(short questid);
	void initializePlayerQuests(int questid, bool isComplete, int mob = 0, int amount = 0);
	void rewardsData(int questid, bool start);
	void addQuestReqs(int questid);
	void giveAgain(int questid, int itemid);
	hash_map <int, Quest*> pquests;
private:
	Player* player;
	hash_map <int, Quest*> cquests;
	hash_map <int, Quest*> questreqs;
};
